iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
自我挑戰組

Codewar 進進出出 JS/Ruby系列 第 15

一下大一下小

  • 分享至 

  • xImage
  •  

題目:
(7 級) Max-min arrays
在這個 Kata,你會得到一組陣列,而你的任務是重新整理這個陣列,讓第一個數字是最大的,第二個數字是最小的,依序排列下去。

範例:

[15,11,10,7,12] => [15,7,12,10,11]

最大的數字 15 排在第一個,最小的數字 7 排在第二個;
第二大的數字 12 排在第三個,第二小的數字 10 排在第四個;
依此類推。


Ruby 解法:

def solve(arr)
  # 先把參數 arr 由小到大排序
  arr = arr.sort
	
  # 建立存放結果的陣列變數 new_arr
  new_arr = []
  
  # 如果 arr 陣列中還有元素就繼續執行
  while arr.length > 0
    # 先把最大的 (最後一個) 數字放進 new_arr 中
    new_arr << arr.pop
    # 再把最小的 (第一個) 數字放進 new_arr 中
    new_arr << arr.shift
  end
  
  # 最後把 new_arr 中的 nil 清除掉回傳
  new_arr.compact
end

JavaScript 解法:

function solve(arr){
  // 先把參數 arr 由小到大排序
  // 因為 JS 的 sort function 預設是以 unicode 的值作為排序
  // 因此要另外寫個函式讓 sort 能夠以數字的大小作為排序依據
  sort_arr = arr.sort((a, b) => a > b ? 1 : -1);
	
  // 建立存放結果的陣列變數 new_arr
  let new_arr = [];
  
  // 如果 arr 陣列中還有元素就繼續執行
  while (sort_arr.length > 0) {
    // 先把最大的 (最後一個) 數字放進 new_arr 中
    new_arr.push(sort_arr.pop());
    // 再把最小的 (第一個) 數字放進 new_arr 中
    new_arr.push(sort_arr.shift());
  }
  
   // 最後把 new_arr 中的 undefined 清除掉回傳
  return new_arr.filter(n => n != null);
}

上一篇
停止逆轉單字
下一篇
Casino
系列文
Codewar 進進出出 JS/Ruby30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言